<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>我的日志 | 秋殇の博客</title>
    <meta name="description" content="日记、记录、感悟">
    <link rel="preload stylesheet" href="/assets/style.a6a6cd3c.css" as="style">
    <link rel="modulepreload" href="/assets/chunks/VPAlgoliaSearchBox.a18b445d.js">
    <link rel="modulepreload" href="/assets/app.4866b9fc.js">
    <link rel="modulepreload" href="/assets/pages_logs_index.md.35beb15f.lean.js">
    
    <link rel="icon" href="/images/fish.jpg">
  <link rel="manifest" href="/manifest.json">
  <meta name="theme-color" content="#235dc8">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <link rel="apple-touch-icon" href="/images/fish.jpg">
  <link rel="mask-icon" href="/images/fish.jpg" color="#235dc8">
  <meta name="msapplication-TileImage" content="/images/fish.jpg">
  <meta name="msapplication-TileColor" content="#000000">
  <script>var _hmt=_hmt||[];(function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?f00a6211b690ac3505105511f6b90b30";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>
  <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-bcf58b99><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c25b702d></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c25b702d> Skip to content </a><!--]--><!----><header class="VPNav no-sidebar" data-v-bcf58b99 data-v-e7025237><div class="VPNavBar" data-v-e7025237 data-v-4882c5cb><div class="container" data-v-4882c5cb><div class="title" data-v-4882c5cb><div class="VPNavBarTitle" data-v-4882c5cb data-v-c9f092c8><a class="title" href="/" data-v-c9f092c8><!--[--><!--]--><!--[--><img class="VPImage logo" src="/images/fish.jpg" alt data-v-261838bf><!--]--><!--[-->秋殇の博客<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-4882c5cb><div class="curtain" data-v-4882c5cb></div><!--[--><!--]--><div class="VPNavBarSearch search" data-v-4882c5cb style="--d3726eb8:&#39;Meta&#39;;"><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-4882c5cb data-v-11c85cf4><span id="main-nav-aria-label" class="visually-hidden" data-v-11c85cf4>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" data-v-11c85cf4 data-v-bbaa7ea4 data-v-7fdf1e32><!--[-->首页<!--]--><!----></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/pages/list/" data-v-11c85cf4 data-v-bbaa7ea4 data-v-7fdf1e32><!--[-->文章<!--]--><!----></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-11c85cf4 data-v-e54c5eb4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-e54c5eb4><span class="text" data-v-e54c5eb4><!----> 分类 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-e54c5eb4><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-e54c5eb4><div class="VPMenu" data-v-e54c5eb4 data-v-d9758112><div class="items" data-v-d9758112><!--[--><!--[--><div class="VPMenuLink" data-v-d9758112 data-v-80fb0ac9><a class="VPLink link" href="/pages/vue/code.html" data-v-80fb0ac9 data-v-7fdf1e32><!--[-->vue<!--]--><!----></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-d9758112 data-v-80fb0ac9><a class="VPLink link" href="/pages/javascript/code.html" data-v-80fb0ac9 data-v-7fdf1e32><!--[-->javascript<!--]--><!----></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-d9758112 data-v-80fb0ac9><a class="VPLink link" href="/pages/react/code.html" data-v-80fb0ac9 data-v-7fdf1e32><!--[-->react<!--]--><!----></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-d9758112 data-v-80fb0ac9><a class="VPLink link" href="/pages/react-native/code.html" data-v-80fb0ac9 data-v-7fdf1e32><!--[-->react-native<!--]--><!----></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-d9758112 data-v-80fb0ac9><a class="VPLink link" href="/pages/python/code.html" data-v-80fb0ac9 data-v-7fdf1e32><!--[-->python<!--]--><!----></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/pages/logs/" data-v-11c85cf4 data-v-bbaa7ea4 data-v-7fdf1e32><!--[-->日志<!--]--><!----></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-4882c5cb data-v-8af7bd39><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-label="toggle dark mode" aria-checked="false" data-v-8af7bd39 data-v-cfd5b55f data-v-3532bfcd><span class="check" data-v-3532bfcd><span class="icon" data-v-3532bfcd><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-cfd5b55f><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-cfd5b55f><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-4882c5cb data-v-1043976d data-v-d6312b01><!--[--><a class="VPSocialLink" href="https://github.com/bayi-95/" target="_blank" rel="noopener" data-v-d6312b01 data-v-e02d7003><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-4882c5cb data-v-441d75c0 data-v-e54c5eb4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-e54c5eb4><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-e54c5eb4><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-e54c5eb4><div class="VPMenu" data-v-e54c5eb4 data-v-d9758112><!----><!--[--><!--[--><!----><div class="group" data-v-441d75c0><div class="item appearance" data-v-441d75c0><p class="label" data-v-441d75c0>Appearance</p><div class="appearance-action" data-v-441d75c0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" aria-label="toggle dark mode" aria-checked="false" data-v-441d75c0 data-v-cfd5b55f data-v-3532bfcd><span class="check" data-v-3532bfcd><span class="icon" data-v-3532bfcd><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-cfd5b55f><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-cfd5b55f><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-441d75c0><div class="item social-links" data-v-441d75c0><div class="VPSocialLinks social-links-list" data-v-441d75c0 data-v-d6312b01><!--[--><a class="VPSocialLink" href="https://github.com/bayi-95/" target="_blank" rel="noopener" data-v-d6312b01 data-v-e02d7003><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-4882c5cb data-v-33db8862><span class="container" data-v-33db8862><span class="top" data-v-33db8862></span><span class="middle" data-v-33db8862></span><span class="bottom" data-v-33db8862></span></span></button></div></div></div><!----></header><!----><!----><div class="VPContent" id="VPContent" data-v-bcf58b99 data-v-d068f002><div class="VPDoc has-aside" data-v-d068f002 data-v-2715c46c><div class="container" data-v-2715c46c><div class="aside" data-v-2715c46c><div class="aside-curtain" data-v-2715c46c></div><div class="aside-container" data-v-2715c46c><div class="aside-content" data-v-2715c46c><div class="VPDocAside" data-v-2715c46c data-v-62f1dbe3><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-62f1dbe3 data-v-7a7145f2><div class="content" data-v-7a7145f2><div class="outline-marker" data-v-7a7145f2></div><div class="outline-title" data-v-7a7145f2>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-7a7145f2><span class="visually-hidden" id="doc-outline-aria-label" data-v-7a7145f2> Table of Contents for current page </span><ul class="root" data-v-7a7145f2 data-v-f3203836><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-62f1dbe3></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-2715c46c><div class="content-container" data-v-2715c46c><!--[--><!--]--><main class="main" data-v-2715c46c><div style="position:relative;" class="vp-doc _pages_logs_index" data-v-2715c46c><div><h1 id="我的日志" tabindex="-1">我的日志 <a class="header-anchor" href="#我的日志" aria-hidden="true">#</a></h1><h3 id="_3-28-23" tabindex="-1">3/28/23 <a class="header-anchor" href="#_3-28-23" aria-hidden="true">#</a></h3><p>∆ blog：新增 小彩蛋 —— 《恐龙快跑》小游戏</p><p>∆ 查看依赖包</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># npm 全局依赖包</span></span>
<span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--depth=0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># brew 查看安装的依赖包</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">search</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">pnpm</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ls</span></span>
<span class="line"></span></code></pre></div><p>参考：<a href="https://www.cnblogs.com/undefined000/p/trex_1.html" target="_blank" rel="noreferrer">chrome 恐龙小游戏源码研究</a></p><h3 id="_3-7-23" tabindex="-1">3/7/23 <a class="header-anchor" href="#_3-7-23" aria-hidden="true">#</a></h3><p>∆ style(component): [CurtBirdButton] 响应式样式修改</p><p>∆ blog：新增 思维模型 - 金字塔原理</p><h3 id="_3-6-23" tabindex="-1">3/6/23 <a class="header-anchor" href="#_3-6-23" aria-hidden="true">#</a></h3><p>∆ feat: 新增组件 <code>CurtBirdButton</code>，首页跳转按钮替换为此组件</p><p>∆ 新增：思维模型 - 刻意学习</p><p>参考：<a href="https://mp.weixin.qq.com/s?__biz=Mzg3OTYzMDkzMg==&amp;mid=2247493043&amp;idx=1&amp;sn=197aca704daa784341a8dd8a5c9d0b73&amp;chksm=cf032a88f874a39e712f7a2f8c29af9c4c371270a50ba49d0628fb07353cd18e6a4e6702c069&amp;scene=178&amp;cur_album_id=2150438405699174401#rd" target="_blank" rel="noreferrer">CSS 的快乐：画一个可爱的三只小鸟 Button</a></p><h3 id="_2-20-23" tabindex="-1">2/20/23 <a class="header-anchor" href="#_2-20-23" aria-hidden="true">#</a></h3><p>看到一篇文章描述成熟的亲密关系，有受到启发，摘要：</p><ol><li>我为我的人生负责，你为你的人生负责，但是我们俩的人生交织在一起，所以我会充分注意和理解我们对于彼此的影响。</li><li>我的存在价值，不会因为对方喜欢或不喜欢我，对我好或对我不好有所增减和改变，相反，它始终都在那里。</li><li>虽然，你是你，我是我，但是你的一举一动会影响到我，我的一举一动也会影响到你。 爱虽然不是控制，但爱也不是放任，爱是全心全意为了所爱之人的福祉考虑，为其做尽可能的事。 所以，我爱你，既是我的事，也与你有关。 当一个人，最终进入到“他人意识阶段”后，Ta会成为一个非常好的恋爱对象，也会成为一个非常好的结婚伴侣。</li></ol><p>参考：<a href="https://mp.weixin.qq.com/s/v0Ird2Pcle6QBnkv_fQCAg" target="_blank" rel="noreferrer">写在情人节：真正成熟的亲密关系是什么样的？</a></p><h3 id="_2-8-23" tabindex="-1">2/8/23 <a class="header-anchor" href="#_2-8-23" aria-hidden="true">#</a></h3><p>∆ fix: <code>algolia</code> 因为 lang 导致无搜索结果的问题，修改 algolia.json 里关于 lang 的设置</p><p>参考：<a href="https://zhuanlan.zhihu.com/p/542544442" target="_blank" rel="noreferrer">vuepress2.x 文档和集成 algolia 配置过程</a></p><p>∆ 把首页背景图转webp减小图片大小</p><p>参考：<a href="https://convertio.co/zh/png-webp/" target="_blank" rel="noreferrer">convertio 转换工具</a></p><h3 id="_2-2-23" tabindex="-1">2/2/23 <a class="header-anchor" href="#_2-2-23" aria-hidden="true">#</a></h3><p>∆ 新增：思维模型</p><p>∆ 新增：algolia 搜索 &amp; Github Action 在 Docker 中执行的 AlgoliaDocSearch scraper action</p><h3 id="_1-18-23" tabindex="-1">1/18/23 <a class="header-anchor" href="#_1-18-23" aria-hidden="true">#</a></h3><p>∆ 暗黑模式疑问：</p><ol><li>如果客户端 <code>webview</code> 不支持 <code>prefers-color-scheme</code>，那么客户端提供接口 ——客户端 js 注入，前端添加监听</li><li>h5 页面无客户端支持时，支持按钮点击切换黑夜模式，按钮入口可配置；或者是默认跟随系统？ ——不需要入口，跟随系统</li><li>给银行的，default 下面默认 light、dark，现场可以修改定制，给指导文档 ——这样处理</li><li>意味着，都是通过样式变量控制，兼容性？影响范围 ——不考虑兼容 ie</li></ol><p>∆ 新增文章：暗黑模式方案</p><p>∆ 新增 github action 自动部署，调研 travis-ci</p><h3 id="_1-17-23" tabindex="-1">1/17/23 <a class="header-anchor" href="#_1-17-23" aria-hidden="true">#</a></h3><p>∆ <code>shell</code> 脚本语法</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 停止执行，需要输入回车</span></span>
<span class="line"><span style="color:#82AAFF;">read</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">请输入提交信息：</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">message</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 给默认值；-n 有值；-z 无值</span></span>
<span class="line"><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">-z</span><span style="color:#89DDFF;"> &quot;</span><span style="color:#A6ACCD;">$message</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">];</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">then</span></span>
<span class="line"><span style="color:#A6ACCD;">  message</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">deploy：更新博客</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"><span style="color:#A6ACCD;">  </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">deploy：更新博客</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"><span style="color:#89DDFF;font-style:italic;">fi</span></span>
<span class="line"></span></code></pre></div><p>∆ 问题：github 访问慢问题</p><p>方法：</p><ol><li>解决 <code>github</code> 访问慢问题：修改 hosts，<a href="https://github.com/521xueweihan/GitHub520" target="_blank" rel="noreferrer">访问获取最新 host 文件</a></li><li>clone 慢：hub.fastgit.xyz 高速的 GitHub git 仓库镜像，使用：</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">clone</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://hub.fastgit.xyz/PaddlePaddle/PaddleOCR.git</span></span>
<span class="line"></span></code></pre></div><h3 id="_8-22-22" tabindex="-1">8/22/22 <a class="header-anchor" href="#_8-22-22" aria-hidden="true">#</a></h3><p>项目经验管理总结：</p><ol><li>按照重要性递减的顺序来做下面这些事情</li><li>雇佣独立的自由职业者而不是机构（项目规模、管理、资源分配和沟通有关）</li><li>串行的任务，增量的结果（1. 如果机构有 8 项完成了 80% 的任务，那么缩小项目范围或更换供应商对你来说代价很大 2. 同时监督 8 项子任务更耗费脑力）</li><li>缩小项目范围，规定任务的界限</li><li>对时间表达成共识（敦促开发人员评估每一项任务，并要求他们注意工作范围）</li><li>及时的沟通、反馈、讨论和解决</li></ol><p>参考：<a href="https://mp.weixin.qq.com/s/QbBPLp1votLmAb5nVLCdag" target="_blank" rel="noreferrer">项目经验管理总结</a></p><h3 id="_8-17-22" tabindex="-1">8/17/22 <a class="header-anchor" href="#_8-17-22" aria-hidden="true">#</a></h3><p><code>Git</code> 在提交时，写上分类前缀：</p><ul><li>feat：新功能</li><li>update：更新某功能</li><li>fix：修补某功能的 bug</li><li>refactor：重构某个功能</li><li>optimize: 优化构建工具或运行时性能</li><li>style：仅样式改动</li><li>docs：仅文档新增/改动</li><li>chore：构建过程或辅助工具的变动</li></ul><h3 id="_8-16-22" tabindex="-1">8/16/22 <a class="header-anchor" href="#_8-16-22" aria-hidden="true">#</a></h3><ol><li><code>pnpm</code> 全称是 “Performant NPM”，即高性能的 npm。它结合软硬链接与新的依赖组织方式，大大提升了包管理的效率，也同时解决了 “幻影依赖” 的问题，让包管理更加规范，减少潜在风险发生的可能性。解决了 npm 嵌套复制多份的问题（浪费磁盘资源、嵌套路径过长在 window 下的问题）、处理多版本（还是嵌套）问题、幽灵依赖的问题（同名的包只会提升一个版本的位置，其余的版本依然会复制多次）。不再是复制了，而是都从全局 store 硬连接到 node_modules/.pnpm，然后之间通过软链接来组织依赖关系</li><li>快：安装速度快。</li><li>准：安装过的依赖会准确复用缓存，甚至包版本升级带来的变化都只 diff，绝不浪费一点空间，逻辑上也严丝合缝。</li><li>狠：直接废掉了幻影依赖，在逻辑合理性与含糊的便捷性上，毫不留情的选择了逻辑合理性。</li></ol><p>参考：</p><ol><li><a href="https://mp.weixin.qq.com/s/bZ7AVSjBcZrZ3I387_esmg" target="_blank" rel="noreferrer">pnpm 的 “快、准、狠”</a></li><li><a href="https://mp.weixin.qq.com/s/sRKiqFNs24NYPxO4P5jq6Q" target="_blank" rel="noreferrer">pnpm 如何实现对 npm、yarn 的降维打击</a></li></ol><h3 id="_8-3-22" tabindex="-1">8/3/22 <a class="header-anchor" href="#_8-3-22" aria-hidden="true">#</a></h3><p>∆ 临时安装依赖工具，比如：npx create-react-app my-app 执行以上这条命令 npx 会按以下顺序工作：</p><ol><li>先查看当前项目有没 <code>create-react-app</code></li><li>如果当前项目找不到，会去全局查找 <code>create-react-app</code></li><li>如果全局还找不到，会帮我们临时从 <code>npm</code> 包仓库安装 <code>create-react-app</code>，不会污染到当前项目，也不会装到全局</li></ol><p>∆ mac brew 切换 <code>node</code> 版本</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#F78C6C;">1.</span><span style="color:#A6ACCD;"> brew unlink node</span></span>
<span class="line"><span style="color:#F78C6C;">2.</span><span style="color:#A6ACCD;"> brew link --overwrite node@</span><span style="color:#F78C6C;">16</span></span>
<span class="line"></span></code></pre></div><p>如果没权限，执行：</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">`</span><span style="color:#FFCB6B;">whoami</span><span style="color:#89DDFF;">`</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">/usr/local/Homebrew/</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">whoami</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">brew</span><span style="color:#C3E88D;"> --prefix</span><span style="color:#89DDFF;">)</span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr/local/Frameworks</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">`</span><span style="color:#FFCB6B;">whoami</span><span style="color:#89DDFF;">`</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">/usr/local/Frameworks/</span></span>
<span class="line"></span></code></pre></div><h3 id="_4-8-22" tabindex="-1">4/8/22 <a class="header-anchor" href="#_4-8-22" aria-hidden="true">#</a></h3><p>能不能涨薪和当前形势的关系并没有那么大。</p><p>涨薪考量的关键因素，还得是你所在公司的业务模式行不行、业绩如何、发展好不好、现金流是否健康等等。当然，最重要的还得看你是否具备涨薪的“潜质”。</p><p>薪酬是能力、经验和岗位的体现，更大的职责、更高的岗位自然会有更高的工资。当前形势，日子都不好过，所以企业不管是涨薪还是招聘，也都会比之前更加谨慎。所以要想脱颖而出，就要具备更 “硬” 的技术和能力，要让公司能看得到你的价值。</p><p>说到提升价值，根据我这些年的经验，我认为以下几点比较重要：</p><ol><li>技术不能落伍。技术要跟得上形势，编码和设计能力要能跟得上发展，这是程序员的基本功。</li><li>学习比自己强的人的技术思维。任何的学习都不能闭门造车，站在巨人的肩膀上才能看的更远。</li><li>讲究方式方法，把学习做到有效性。</li><li>长期坚持学习。互联网时代，信息传播快，各项技术更新换代也快。如果不坚持学习积累，你将会很容易被替代。</li><li>合理安排时间，利用好碎片化时间，做知识的积累。</li></ol><h3 id="_4-6-22" tabindex="-1">4/6/22 <a class="header-anchor" href="#_4-6-22" aria-hidden="true">#</a></h3><p>持续集成(CI)：目标是更早，更容易地识别开发过程中可能出现的问题。可以设置代码样式的检查，代码复杂度（低复杂性使测试过程更简单）和其他检查。 这有助于最大限度地减少负责代码审查的人员的工作量，节省时间并提高代码质量。</p><ol><li>开发人员在其本地计算机上检查代码</li><li>完成后 - 他们将代码变更提交到代码仓</li><li>代码仓向 CI 系统发送请求（webhook）</li><li>CI 服务器运行任务（测试，覆盖率，检查语法等）</li><li>CI 服务器发布已保存的工件（artifacts）以进行测试</li><li>如果构建或测试失败，CI 服务器会向团队发出警报</li><li>该团队解决了这个问题</li></ol><p>参考：</p><ol><li><a href="https://zhuanlan.zhihu.com/p/59686072" target="_blank" rel="noreferrer">持续集成 CircleCI vs Travis CI vs Jenkins</a></li><li><a href="https://www.jianshu.com/p/36af6af74dfc" target="_blank" rel="noreferrer">使用 CircleCI 2.0 进行持续集成/持续部署</a></li></ol><h3 id="_3-21-22" tabindex="-1">3/21/22 <a class="header-anchor" href="#_3-21-22" aria-hidden="true">#</a></h3><p>关于 <code>fiber</code>：</p><ol><li>react fiber：时间切片，改善大批量 dom 渲染时导致 cpu 占用，用户操作无相应的问题；</li><li>HCI 研究表明，除非它在做动画，否则对于正常的用户交互，大多数人不会感觉到差异，除非更新时间超过 100 毫秒。</li><li>也就是说，只有当频繁的更新需要超过 100 毫秒的纯 CPU 时间时，时间切片才变得实际有用。</li><li>Vue3 的优化，使占用 CPU 的时间要少得多，在 CPU 空间花费 100+毫秒的可能性大大降低，而且只有在极端情况下才会遇到，在这种情况下，DOM 可能会成为更重要的瓶颈。</li></ol><p>参见：<a href="https://github.com/vuejs/rfcs/issues/89" target="_blank" rel="noreferrer">Why remove time slicing from vue3? #89</a></p><h3 id="_3-18-22" tabindex="-1">3/18/22 <a class="header-anchor" href="#_3-18-22" aria-hidden="true">#</a></h3><p>∆ idea: 日志里加链接，相当于目录索引，可以在文件夹里归档详细内容。例如：在桌面添加里快捷方式，方便添加日志。</p><p>∆ Github 访问失败或者缓慢的原因：</p><p>本机网络设置的 DNS 服务器解析 Github 相关域名的 IP 地址，这些 IP 地址要么本身无法访问，要么节点过远，从而导致了访问失败或者速度缓慢。 那么我们修改的方案可以是：</p><ol><li><p>修改本机 Hosts 文件，Hosts 文件的作用就是绑定域名与 IP 的映射关系，这样我们主动建立域名与 IP 的映射关系，访问到这些域名时直接使用 Hosts 指定的 IP，绕过 DNS 解析。</p></li><li><p>修改网络的 DNS 服务器，换到能够解析出合适 IP 的 DNS 服务器。</p></li></ol><p>因为 DNS 服务器储存的映射关系是动态更新的，无法直接控制。直接修改本机 Hosts 文件，锁定域名对应的 IP，更加有效方便。</p><p>参考：<a href="./test链接地址.html">关于 webpack 打包/path</a></p><h3 id="_2-14-22" tabindex="-1">2/14/22 <a class="header-anchor" href="#_2-14-22" aria-hidden="true">#</a></h3><p>薪福通 &amp; 苏薪通 POC 对比</p><ol><li>创建薪资组（创建薪资表），我们这边写了名字、选月份，直接创建了，简化了很多（选择人员、计薪周期、薪资规则的配置，薪福通这样的对需求的覆盖范围更广）</li><li>在核对算薪人员，同步计薪人员，把人员数据都拉过来了没有按部门区分；（薪福通在创建薪资组时，支持部门、岗位、状态来筛选选择）</li><li>薪资规则我们这边是默认了一个，不支持修改配置（规则是什么？），模型，用于后端计算薪资？（数据来源、计算规则）；规则落库，逻辑自洽</li><li>薪资规则不同，导入的模版不同，计算规则不同；薪福通预置了几种规则。</li></ol><h3 id="_1-25-22" tabindex="-1">1/25/22 <a class="header-anchor" href="#_1-25-22" aria-hidden="true">#</a></h3><ol><li>研究<code>vitepress</code>，整了一个 my-blog-vitepress 版本；感觉 vitepress 没有提供插件，文档内容很少。</li><li>fix：博客部署时，关于 document 的报错警告（因为 VuePress 是在 Node.js 服务端渲染，node 没有 window，所以报错）</li></ol><h3 id="_1-21-22" tabindex="-1">1/21/22 <a class="header-anchor" href="#_1-21-22" aria-hidden="true">#</a></h3><ol><li>这阵儿忙过去了，开始写博客。</li><li>幸存者偏差：看到的现象、得到的结论是片面的，要警惕、辩证、全面地去思考。来源：二战英国，对返航飞机统计，大多受损的地方在机翼，所以要加厚机翼装甲？可更重要的不是机腹的装甲么？实际上是机腹中弹的飞机飞不回来了。</li></ol><h3 id="_11-17-21" tabindex="-1">11/17/21 <a class="header-anchor" href="#_11-17-21" aria-hidden="true">#</a></h3><ol><li>不想过得没意义，所以开始认真定目标计划，每天、每周、每月。</li><li>还有每个晚上的，大致安排。</li><li>有目标，过得清楚，有意义。</li><li>整理了我的滴答清单，过了一遍。</li><li><div class="comp-egg-container" data-v-0ab28d53><span data-v-0ab28d53>-彩蛋- 被你发现了 点它 : )</span><span style="display:none;" class="tips" data-v-0ab28d53>点击空格，游戏开始！</span><div class="content-box" style="display: none" data-v-0ab28d53><!--[--><div class="comp-dinosaur-runner" data-v-524defd3><div id="runner-container" class="runner-container offline" data-v-524defd3></div><img id="sprite" style="display:none;" src="" alt="test" data-v-524defd3></div><!--]--></div></div></li></ol><h3 id="_9-30-21" tabindex="-1">9/30/21 <a class="header-anchor" href="#_9-30-21" aria-hidden="true">#</a></h3><ol><li>早上去体检，做彩超，等的人真多。</li><li>blog：修复注册评论组件的问题：enhanceApp 的触发时机问题，改为在路由变化时注册组件，且设定时器（因为没有回调、生命周期），等 dom 渲染完。</li><li>规划、开发博客列表组件，接下来去整理下博客内容。</li><li>blog：新增文章列表。</li></ol><h3 id="_9-29-21" tabindex="-1">9/29/21 <a class="header-anchor" href="#_9-29-21" aria-hidden="true">#</a></h3><ol><li>下载了 element-plus 源码，结合 <a href="https://mp.weixin.qq.com/s?__biz=Mzg3MTU4NTI3OA==&amp;mid=2247488540&amp;idx=1&amp;sn=a201dc3d84c443012b6881b38d9383e9&amp;scene=21#wechat_redirect" target="_blank" rel="noreferrer">文章：从 Element UI 源码的构建流程来看前端 UI 库设计</a> 学习</li><li>发现了 pnpm（npm/yarn 升级版）、vitepress（vuepress 升级版：vite + vue3.0）</li><li>学习 UI 库的构造结构、复习 vue3.0 的语法结构（steup、hook）、学习 vitepress 对比 vuepress</li><li>昨晚的暴雨，可真刺激。乌云压的很低，天上是水，地上是水，天地之间被雨幕连接，雨水眯着眼睛看不清，穿着雨衣感觉车像在湖面上骑着，除了雨声听不到其它的声音。</li><li>博客：根据 md 文件 title 的参数<code>gitalkConfig</code>，判断是否渲染评论组件</li></ol><h3 id="_9-28-21" tabindex="-1">9/28/21 <a class="header-anchor" href="#_9-28-21" aria-hidden="true">#</a></h3><p>博客</p><ol><li>新增了百度统计功能</li><li>重写 copy 监听，带上版权信息</li><li>找到了原博客主的构建他博客的文章，赞</li></ol><h3 id="_9-27-21" tabindex="-1">9/27/21 <a class="header-anchor" href="#_9-27-21" aria-hidden="true">#</a></h3><ol><li>我的博客新增 gitalk 评论功能</li><li>调整博客布局、样式</li></ol><h3 id="_9-26-21" tabindex="-1">9/26/21 <a class="header-anchor" href="#_9-26-21" aria-hidden="true">#</a></h3><ol><li>使用 wd 硬盘备份我的 mac（之前安装了虚拟机）识别 wd 很慢，考虑是接触不良，或者反应慢要等一会儿</li><li>继续整理浏览器书签</li><li>完善每日计划</li></ol><h3 id="_5-14-20" tabindex="-1">5/14/20 <a class="header-anchor" href="#_5-14-20" aria-hidden="true">#</a></h3><p>反思： 摸到 bug 的脚了但我没有抓住它 需要反思</p><p>描述：晚上周伟有反馈问题 / 样式丢失问题 / dev 环境正常？？</p><ol><li>没定位到问题,所以我换了组件</li><li>定位是样式丢失，没能反应过来，是没 import 引入组件样式，这个组件跟其他的是不一样的，是没带上样式的</li><li>列表发现有问题，没能想更近一步，忽视了商品新增/编辑的，用到这个组件的地方</li><li>如果想到这一点 再全局搜索就好了；如果引入组件的时候 仔细点就好了</li></ol><p>总结：</p><ol><li>仔细点，看起来没问题，不代表真的没问题</li><li>这个地方有问题，其他地方会不会也有问题（多想一点）</li></ol><h3 id="_4-17-20" tabindex="-1">4/17/20 <a class="header-anchor" href="#_4-17-20" aria-hidden="true">#</a></h3><p>∆ 开发流程</p><p>master：线上稳定版本（所有功能都是稳定的）</p><p>dev：新功能测试版本（每个功能都是基本完整的，可用的，但可能不稳定，属于测试阶段）</p><p>xiak-monitor-pay：功能开发分支（开发中）</p><p>...</p><p>线上紧急问题修复 直接从 master 拉一个 fix-bug 分支出来修复，测试完毕后，然后合并到 master 以解决紧急问题</p><p>然后不要忘了，dev 和 功能开发分支 要拉 master 的更新</p><p>git 开发流程/规则 master：主分支，线上生产环境代码</p><p>dev：开发测试分支，测试环境代码，用于内部测试</p><p>master 和 dev 上从不直接修改代码，只接受合并</p><p>开发新功能和迭代永远只在 master 拉分支出来的功能分支上进行</p><p>开发过程中，经常从 master 往自己的功能分支合并，越频繁越好（重复三遍）</p><p>功能开发完毕（最新的 master 往上合过并通过自测才算是开发完毕），先合到 dev 上进行测试</p><p>测试(内侧)没问题就可以往 master 上合并上线</p><p>如果一个功能最初是从某个功能分支中出来的，那么只要涉及该功能的更新，就需要一直维护该分支，没有特殊情况不要抛弃它而去建立新的迭代分支，确保不要出现一个功能分散在多个分支中</p><p>建立功能分支时功能要确定，不能模棱两可，一个功能只能在一个分支中，确保该功能的整个生命周期都由该分支来维护和迭代。</p><p>功能分支只有测试通过，需要直接上线时才需要往 master 上合并</p><p>经常从 master 往自己所开发的功能分支上合并是好习惯</p><p>dev 只能接受合并，永远不能往其他任何分支合并，切记！</p><p>git 的合并操作是：往当前所在的分支合，一定不要看错了当前所在分支（命令行中可能没实时显示，按下回车或查看当前所在分支）</p><p>功能分支的粒度要尽量小，不要把很多功能都放在一个功能分支中，尽量一个小功能一个功能分支</p><p>处于开发的功能分支之间不能有任何肢体接触</p><p>处于开发的功能分支是不完备的，经常有 coding...这样临时保存代码的提交，而 dev 和 master 上，决不允许出现这样的提交（HEAD）</p><p>有时候需要单独测试某个功能分支，<a href="http://dev.abc.com" target="_blank" rel="noreferrer">dev.abc.com</a> 环境切换为需测试的分支即可</p><p>每次开始写代码前，不要忘记 git pull 拉代码，并且开发过程中需要经常拉代码，越频繁越好，因为即使某一个功能分支也往往是由多人同时开发的。</p><p>功能开发完毕后合并到 master 分支上线时别忘记了检查开发时的一些为开发环境所作的特定配置修改，如一些硬编码的配置参数，要仔细检查，如预定功能的预定限额(硬编码)，开发时往往为了方便会调整这些值，但是正式上线时一定要修改为正式环境的配置再上线。否则如果把开发/测试环境的配置带到线上了就会造成严重的后果。</p><p>严格遵守以上规则，如果你发现你想做的操作不包含在以上规则中，则一定不要做！</p><p>其他 当然如果时间过去很久，都差不多忘记当初的分支了，也可以抛弃它再新建分支</p><p>速记：</p><p>master：可以把我合到任何地方，但别轻易合并到我身上。</p><p>dev：要测试的往我这儿合并，但不要让我合并到你身上，否则你就完了。</p><p>上线：上线时检查所有开发环境的配置(硬编码参数等)，确保线上除了逻辑代码正常外所有软硬配置也要正确。</p><p>各功能分支间：尽量不要有交流，实在想交流的话，彼此得要做好充分的准备，沟通协商好（这意味着两个功能有不可避免的耦合）；如果上线了，要交流通过 master。</p><h3 id="_3-31-20" tabindex="-1">3/31/20 <a class="header-anchor" href="#_3-31-20" aria-hidden="true">#</a></h3><p>∆ 关于学习</p><ol><li>能把知识熟练地表达出来</li><li>记得满满的笔记，满书的荧光笔等等，这些方法不好，是实际上的思想懒惰，我们的大脑会以为我们记住了，实则不然。</li><li>只有不断检索知识，给知识打结，才能保证知识是属于自己的。</li><li>如果能够间隔练习，并穿插着不同的内容记性练习才是最能帮助长期记忆的。</li><li>在别人交给你答案之前，先尝试自己解决问题，这样效果会更好，哪怕在尝试中犯下一下错误，也是有助于帮助自己提升认知的。</li><li>思考自己工作中的问题会更有助于提高自己的专业水平。</li></ol><p>∆ js 代码规范</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 超长的不可分割的代码允许例外，比如复杂的正则表达式。长字符串不在例外之列。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// [强制] 运算符处换行时，运算符必须在新行的行首。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 示例：</span></span>
<span class="line"><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#A6ACCD;"> (</span></span>
<span class="line"><span style="color:#A6ACCD;">	(user</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">isAuthenticated</span><span style="color:#A6ACCD;">() </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> user</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">isInRole</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">admin</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;">) </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> user</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">hasAuthority</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">add-admin</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;">)) </span><span style="color:#89DDFF;">||</span></span>
<span class="line"><span style="color:#A6ACCD;">	user</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">hasAuthority</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">delete-admin</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#89DDFF;">	</span><span style="color:#676E95;font-style:italic;">// Code</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C792EA;">var</span><span style="color:#A6ACCD;"> html </span><span style="color:#89DDFF;">=</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">// 此处用一个空字符串，以便整个 HTML 片段都在新行严格对齐</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">&lt;article&gt;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">&lt;h1&gt;Title here&lt;/h1&gt;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">&lt;p&gt;This is a paragraph&lt;/p&gt;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">&lt;footer&gt;Complete&lt;/footer&gt;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">+</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">&lt;/article&gt;</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 三元运算符由3部分组成，因此其换行应当根据每个部分的长度不同，形成不同的情况。</span></span>
<span class="line"><span style="color:#C792EA;">var</span><span style="color:#A6ACCD;"> result </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> thisIsAVeryVeryLongCondition </span><span style="color:#89DDFF;">?</span><span style="color:#A6ACCD;"> resultA </span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> resultB</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C792EA;">var</span><span style="color:#A6ACCD;"> result </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> condition </span><span style="color:#89DDFF;">?</span><span style="color:#A6ACCD;"> thisIsAVeryVeryLongResult </span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> resultB</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// [强制] 在 if / else / for / do / while 语句中，即使只有一行，也不得省略块 {...}。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 示例：</span></span>
<span class="line"><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#A6ACCD;"> (condition) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;">	</span><span style="color:#82AAFF;">callFunc</span><span style="color:#F07178;">()</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// TODO: 有功能待实现。此时需要对将要实现的功能进行简单说明。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// FIXME: 该处代码运行没问题，但可能由于时间赶或者其他原因，需要修正。此时需要对如何修正进行简单说明。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// HACK: 为修正某些问题而写的不太好或者使用了某些诡异手段的代码。此时需要对思路或诡异手段进行描述。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// XXX: 该处存在陷阱。此时需要对陷阱进行描述。</span></span>
<span class="line"></span></code></pre></div><h3 id="_3-30-20" tabindex="-1">3/30/20 <a class="header-anchor" href="#_3-30-20" aria-hidden="true">#</a></h3><p>∆ 看了<code>lavas</code>的文档：关于移动端、vue、pwa 的开发框架，可以在手机桌面上生成图标</p><p><a href="https://lavas.baidu.com/guide/v2/basic/introduction" target="_blank" rel="noreferrer">lavas 参考文档</a></p><h3 id="_3-25-20" tabindex="-1">3/25/20 <a class="header-anchor" href="#_3-25-20" aria-hidden="true">#</a></h3><p>∆ Mac 内存 cpu 占用大 查是 Spotlight 引起</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 关闭</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mdutil</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">off</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 打开</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mdutil</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">on</span></span>
<span class="line"></span></code></pre></div><h3 id="_2-24-20" tabindex="-1">2/24/20 <a class="header-anchor" href="#_2-24-20" aria-hidden="true">#</a></h3><p>∆ 疫情没那么严重了 复工第一天 我的日志也开始写起来了</p><h3 id="_1-22-20" tabindex="-1">1/22/20 <a class="header-anchor" href="#_1-22-20" aria-hidden="true">#</a></h3><p>∆ Git ignore 修改无效</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--cached</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span></span>
<span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span></span>
<span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">commit</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-m</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">removed xxx from repository</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"></span></code></pre></div><h3 id="_1-21-20" tabindex="-1">1/21/20 <a class="header-anchor" href="#_1-21-20" aria-hidden="true">#</a></h3><p>∆ 我还有哪些 30 岁前想要尝试的事？</p><p>∆ 整理我的博客</p><p>∆ web 学习路线</p><p><img src="/images/web学习路线.png" alt=""></p><h3 id="_1-20-20" tabindex="-1">1/20/20 <a class="header-anchor" href="#_1-20-20" aria-hidden="true">#</a></h3><p>∆ 开始写个人博客了</p><p><strong>参考:</strong></p><ul><li><a href="https://juejin.im/post/5dce1e0e5188254eda3936c5" target="_blank" rel="noreferrer">1 小时搞定 vuepress 快速制作 vue 文档/博客+免费部署预览</a></li></ul><h3 id="_1-17-20" tabindex="-1">1/17/20 <a class="header-anchor" href="#_1-17-20" aria-hidden="true">#</a></h3><p><a href="https://gitbook.cn/" target="_blank" rel="noreferrer">https://gitbook.cn/</a></p><p>GitChat 是一款基于微信平台的知识分享产品。通过这款产品我们希望改变 IT 知识的学习方式。</p><h3 id="_1-16-20" tabindex="-1">1/16/20 <a class="header-anchor" href="#_1-16-20" aria-hidden="true">#</a></h3><p>∆ 学习<code>react-navigation</code>的 demo 学习记录；参见 2020-1-16</p><h3 id="_1-15-20" tabindex="-1">1/15/20 <a class="header-anchor" href="#_1-15-20" aria-hidden="true">#</a></h3><p>∆ 结合<code>react-navigation</code> example 目录下的示例 完成 MyApp 的改造</p><p>∆ ios 的状态栏配置 用的是<code>react-navigation</code>的</p><p>∆ 0.6+ 版本 RN 项目启动方式</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 1.安装依赖</span></span>
<span class="line"><span style="color:#FFCB6B;">yarn</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 2.链接库</span></span>
<span class="line"><span style="color:#FFCB6B;">Cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ios</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">pod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 3.参考package.json</span></span>
<span class="line"><span style="color:#FFCB6B;">yarn</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ios</span></span>
<span class="line"></span></code></pre></div><h3 id="_1-14-20" tabindex="-1">1/14/20 <a class="header-anchor" href="#_1-14-20" aria-hidden="true">#</a></h3><p>∆ RN 看 demo</p><p>看美团的 rn 的项目架构 学会 RN 的界面搭建，路由跳转</p><p>∆ 查看 yarn、npm 全局安装过的包</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">yarn</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">global</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">list</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--depth=0</span></span>
<span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">list</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--depth=0</span></span>
<span class="line"></span></code></pre></div><p>∆ rn 的路由 demo 下载 待研究</p><h3 id="_1-13-20" tabindex="-1">1/13/20 <a class="header-anchor" href="#_1-13-20" aria-hidden="true">#</a></h3><p>∆ <code>ReactNative</code> 再熟悉下 架子搭起来</p><p>参考 RN 中文官网 安装 pod - gem - ruby 换源 0.6 版以上的 RN-ios 版跑起来了</p><h3 id="_1-9-20" tabindex="-1">1/9/20 <a class="header-anchor" href="#_1-9-20" aria-hidden="true">#</a></h3><p>∆ 整理之前的 Notes，记忆宫殿，下载了《学习之道》</p><h3 id="_1-8-20" tabindex="-1">1/8/20 <a class="header-anchor" href="#_1-8-20" aria-hidden="true">#</a></h3><p>∆ 看了以前的<code>ffmpeg</code>文档 试了<code>ffmpeg</code>视音频分离；fetch 鬼灭之刃的动漫，优化了 python 脚本</p><h3 id="_1-7-20" tabindex="-1">1/7/20 <a class="header-anchor" href="#_1-7-20" aria-hidden="true">#</a></h3><p>∆ 和 王斌 &amp; 超哥的谈话</p><p>王斌：未来的展望，个人的规划，工作的态度</p><p>超哥：随时间的增长 个人技术的形状‘梯形’ 广度 &amp; 深度；5 年是技术的目标；</p><p>又提起了去看源码的念头</p><p>分析自己：</p><p>我现在还在基础的层级里，接触 React，RN，小程序，Vue，uni-app，python 之类的技术，涉及不深。</p><p>最近 研究新技术的时间不多，我想我应该再去想想，做个规划。尤其，规划好个人的一天怎么过得更充实些，往里面塞些好东西进去。</p><p>∆ MAC 快捷键</p><p>查网页，整理 mac 快捷键，PDF 文档参见：2020-1-7</p><p>∆ 链接我的 windows 电脑</p><p>使用<code>TeamViewer</code> 进行中...</p><h3 id="_1-4-20" tabindex="-1">1/4/20 <a class="header-anchor" href="#_1-4-20" aria-hidden="true">#</a></h3><p>∆ 写了 Vue 触发式组件 根据博客上的 demo 改装，思路如下：</p><div class="language-js"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 1.Components 写页面</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 2.Index.js 初始化 处理挂载到vue实例后的逻辑</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">// 3.main.js 挂载到vue实例</span></span>
<span class="line"><span style="color:#89DDFF;font-style:italic;">import</span><span style="color:#A6ACCD;"> VoicePrompt </span><span style="color:#89DDFF;font-style:italic;">from</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">@/components/VoicePrompt</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"><span style="color:#A6ACCD;">Vue</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">use</span><span style="color:#A6ACCD;">(VoicePrompt)</span></span>
<span class="line"></span></code></pre></div><h3 id="_1-3-20" tabindex="-1">1/3/20 <a class="header-anchor" href="#_1-3-20" aria-hidden="true">#</a></h3><p>∆ 整理了文件夹</p><p>百度云笔记的文件夹 还有 MAC 的 Notes</p><p>把 <code>Google Cloud Platform</code> 上搭建<code>shadowSocks</code>的命令行复制到文件夹里了</p><p>∆ 当别人问问题</p><p>需要我做什么，我能帮到你什么？</p><p>你想知道什么 （明确目的） 耐心些 （分析下）我帮不到你，但我知道对应负责人你可以去找他，阿东</p><h3 id="_1-2-20" tabindex="-1">1/2/20 <a class="header-anchor" href="#_1-2-20" aria-hidden="true">#</a></h3><p>∆ 实践<code>ffmpeg</code>与<code>python</code>结合</p><p>在原基础上写了个脚本获取 动漫网的 m3u8 地址</p><p>难点： 获取嵌套的<code>iframe</code>里的地址前缀 查资料使用 py 插件<code>selenium</code> 模拟打开浏览器 解决 遇到问题 运行时，报错须官网下载<code>driver</code>对应 chrome 的版本才行，复制到<code>/usr/local/bin</code> 解决</p><p>最后使用<code>ffmpeg</code>下载视频</p><p>同时开了 3 个 ffmpeg 结果很慢</p><h3 id="_12-31-19" tabindex="-1">12/31/19 <a class="header-anchor" href="#_12-31-19" aria-hidden="true">#</a></h3><p>∆ 想使用<code>python</code>下载「刀剑神域」</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 1.下载 ffmpeg</span></span>
<span class="line"><span style="color:#FFCB6B;">brew</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ffmpeg</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 2.打开页面 F12 - source 查找 index.m3u8（它是分片下载的 .ts）</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 3.寻找编号6885_4996de9a,6886_007a5837,6887_f08da6c7</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 4.运行命令 下载合并</span></span>
<span class="line"><span style="color:#FFCB6B;">ffmpeg</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://youku.cdn-163.com/20180507/6885_4996de9a/1000k/hls/index.m3u8</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">copy</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">01.mp4</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 参考：https://blog.csdn.net/weixin_33906657/article/details/88595352</span></span>
<span class="line"></span></code></pre></div><p>∆ git 执行 commit 后，还没执行 push 时，想要撤销这次的 commit，该怎么办（sourceTree）？</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">git</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">reset</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--soft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">HEAD^</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 然后重启sourceTree</span></span>
<span class="line"></span></code></pre></div><p>∆ 想用<code>ssh</code>登录<code>github</code></p><ol><li>检查<code>SSH</code>密钥是否存在</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.ssh</span></span>
<span class="line"><span style="color:#82AAFF;">cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.ssh,</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 如果有文件id_rsa.pub 或 id_dsa.pub，则密钥存在。</span></span>
<span class="line"></span></code></pre></div><ol start="2"><li>生成新的<code>ssh</code>密钥 在命令行中输入</li></ol><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-palenight"><code><span class="line"><span style="color:#FFCB6B;">ssh-keygen</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rsa</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-C</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">your_email@example.com</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"></span></code></pre></div><p>生成 ssh 密钥后，可以到~/.ssh 目录下查看相关文件，一般来说 ssh 密钥会包含 id_rsa 和 id_rsa.pub 两个文件，分别表示生成的私钥和公钥。 在 git 等源代码管理中，使用 cat ~/.ssh/id_rsa.pub 命令，打印并将相应内容复制到源代码管理服务器即可实现 git 的无密码管理。</p></div></div></main><!--[--><!--]--><footer class="VPDocFooter" data-v-2715c46c data-v-b6f746ca><div class="edit-info" data-v-b6f746ca><div class="edit-link" data-v-b6f746ca><a class="VPLink link edit-link-button" href="https://github.com/bayi-95/my-bolg/tree/master/docs/pages/logs/index.md" target="_blank" rel="noreferrer" data-v-b6f746ca data-v-7fdf1e32><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" data-v-b6f746ca><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Edit this page<!--]--><!----></a></div><div class="last-updated" data-v-b6f746ca><p class="VPLastUpdated" data-v-b6f746ca data-v-4a6113bb>Last updated: <time datetime="2023-03-29T09:22:44.000Z" data-v-4a6113bb></time></p></div></div><!----></footer><!--[--><!--]--></div></div></div></div></div><footer class="VPFooter" data-v-bcf58b99 data-v-648d7a08><div class="container" data-v-648d7a08><p class="message" data-v-648d7a08>部分文章收录于网络，转载请署名出处 | 联系博主可以发送邮件至 <a href="mailto:necro.vice@yahoo.com">necro.vice@yahoo.com</a></p><p class="copyright" data-v-648d7a08>Copyright © 2020-present</p></div></footer><!--[--><!--]--></div></div>
    <script>__VP_HASH_MAP__ = JSON.parse("{\"pages_javascript_source.md\":\"d80352b7\",\"pages_list_index.md\":\"c8c09e37\",\"pages_javascript_code.md\":\"b988f480\",\"index.md\":\"1ec62178\",\"pages_javascript_暗黑模式前端修改方案.md\":\"6cdec8ec\",\"pages_python_code.md\":\"ed62e3b2\",\"pages_python_source.md\":\"4b129630\",\"pages_react-native_code.md\":\"02e43813\",\"pages_react-native_index.md\":\"1ef81306\",\"pages_react-native_source.md\":\"d9eab48b\",\"pages_react_code.md\":\"94a0feee\",\"pages_react_source.md\":\"56f349ec\",\"pages_vue_code.md\":\"73247b19\",\"pages_logs_index.md\":\"35beb15f\",\"pages_vue_source.md\":\"1b064215\",\"pages_idea_思维模型.md\":\"50ebcb7f\",\"pages_idea_爱和治愈自己.md\":\"fad6366d\"}")</script>
    <script type="module" async src="/assets/app.4866b9fc.js"></script>
    
  </body>
</html>